package com.task.core.service;


import com.task.core.domain.DataOperationInfo;
import com.task.core.domain.DataPreAvailableInfo;
import com.task.core.domain.MissionInfo;
import com.task.core.domain.info.DataAvailableDataInfo;
import com.task.core.domain.info.SourceConfig;

import java.util.List;
import java.util.Map;

public interface DataPreAvailableService {

    /**
     * 初始化预计算表
     * @param childTableCountMap 每张子表的数量
     * @param dataSourceCode 数据源
     * @param allCount 这个数据源总共的数量
     */
    void initPreAvailable(Map<String, Long> childTableCountMap, String dataSourceCode, Integer allCount,String OperationId);

    /**
     * 通过数据源获取可以使用的子表的后缀
     *
     * @param sourceCodeList
     * @return
     */
    DataPreAvailableInfo getCanUseChildTableIdBySourceCodes(List<String> sourceCodeList, String missioncode, String affiliateCode, String advertiserCode, String mssionFlag, String affiliateString ,String advertiserFlag );

    /**
     * 更新预计算表
     *
     * @param dataAvailableDataInfo
     * @param dataType
     */
    void updateOrInsertPreAvailableData(DataAvailableDataInfo dataAvailableDataInfo, String code, String affiliateCode, String advertiserCode, String dataType);

    DataOperationInfo getCanUseSendRefere(SourceConfig sourceConfig);

    void updatePreAvailableDataIncrease(String duplicateCondition, String sourceCode, MissionInfo missionByCode, String dataType);

    DataPreAvailableInfo getUseDataCountByFilterAndSourceCode(MissionInfo missionByCode, String code);

    void updateUseBySourceCode(String datasourceCode);

    void deletePreAvailableData(String datasourceCode);

//    void updataAvailableDataBatchByIsInitAndSouceCode(List<DataAvailableDataInfo> dataAvailableDataInfos);


}
